package E_2024;

import java.util.Arrays;

/*
用数组代表每个人的能力，一个比赛活动要求参赛团队的最低能力值为N，每个团队可以由1人或2人组成，

且1个人只能参加1个团队， 请计算出最多可以派出多少支符合要求的团队？

输入描述:
    5
    3 1 5 7 9
    8
    第一行数组代表总人数，范围[1,500000]
    第二行数组代表每个人的能力，每个元素的取值范围[1, 500000]，数组的大小范围[1,500000]
    第三行数值为团队要求的最低能力值，范围[1, 500000]
输出描述：
    3
最多可以派出的团队数量
示例 1：

    输入
    5
    3 1 5 7 9
    8
    输出
    3
    说明
    3,5组成一队，1,7组成一队，9自己一个队，故输出3
示例 2：

    输入
    7
    3 1 5 7 9 2 6
    8
    输出
 */
public class E_100_32 {
    public static void main(String[] args) {
        System.out.println(ans(new int[]{3,1,5,7,9,2,6}, 8));
    }
    public static int ans(int[] list, int num){
        Arrays.sort(list);
        int right = list.length - 1;
        int left = 0;
        int ans = 0;
        while(left < right){
            if (list[right] >= num){
                ans ++;
                right --;
            }else {
                if (list[left] + list[right] >= num){
                    ans ++;
                    right --;
                }
                left ++;
            }
        }
        return ans;
    }
}
